sql注入所导致的一些问题
http://www.cnblogs.com/hkncd/archive/2012/03/31/2426274.html
为了防止SQL注入问题,切记的一点是不要使用字符串拼接,这样出现SQL注入的可能性很大,就算使用字符过滤、字符串检测、字符串替换、存储过程或者其他方法,危险系数还是很大的。
SQL注入的本质是输入特殊符号(例如’ ” . 之类的)破坏了SQL语句,导致数据泄露
目前我看到的解决方案是使用参数化SQL
比如以前这样一条查询语句
1 | string key; |
这是条模糊查询
我们可以考虑把使用参数化SQL查询
改写成以下:
1 | string key; |
但是我们的代码不一定会智能到知道包含在这个string类型的sql中,@key就是指代我们的string的key
目前我是在C#下开发,所以我们使用一个C#下的SqlParameter把实际的值和SQL语句中的链接起来
在不同的语言环境中,sql的参数化查询使用不同
SqlParameter来自System.Date.SqlClient
1 | SqlParameter spmKey = new SqlParametr(); |
仅仅这样是不行的,虽然我们已经建立了SqlParameter实体,也把@key和key变量给了spmkey,但是spmKey和我们的sqlconnection和sqlAdapter毫无联系(sqlconnection和sqlAdapter是我们在C#中链接microsoft sql server的方式)
1 | SqlConnection conn = new SqlConnection(System.ConfigureManger.ConnectionString["DB"].ConnectionString.tosString); |
如果觉得这样太麻烦了,可以简洁的代码
1 | SqlConnection conn = new SqlConnection(System.ConfigureManger.ConnectionString["DB"].ConnectionString.tosString); |
以上就完成了我们用参数化防止SQL注入的方式